Plot and fit distributions of variables

Histogram of Velocity of all

Log distribution, 0’s make up 3% of all data

CC.TotalData <- na.omit(TotalData)
head(CC.TotalData)
10^mean(log10(CC.TotalData$v[CC.TotalData$v>0]))
[1] 0.03502632
sd(log10(CC.TotalData$v[CC.TotalData$v>0]))
[1] 0.5358195

Now we’re going to plot each unique krill and their bimodality with a dip test (less than 0.05 is multimodality)

for (i in 1:length(ind)){
jpeg(filename=paste(ind[i]+".jpg"), width = 480, height = 480)
 hist(log10(CC.TotalData$v[CC.TotalData$D_V_T==ind[i]]),
     breaks = 50,
     xlab = "Velocity (Log^10 mm/s)",
     main = ind[i])
dev.off()
}
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors
Warning in Ops.factor(ind[i], ".jpg") : ‘+’ not meaningful for factors

Now looking at turning angles

for (i in 1:length(ind)){
jpeg(filename=paste(ind[i], '.jpeg', sep = ''), width = 480, height = 480)
hist(CC.TotalData$turn.angle[CC.TotalData$D_V_T==ind[i]],
       breaks = 50,
     xlab = "Turn Angles",
     main = ind[i]) 
dev.off
}
Error in jpeg(filename = paste(ind[i], ".jpeg", sep = ""), width = 480,  : 
  too many open devices

Starting to look at bi-modality in the variables by merging the TotalData frame with the “tab” table

freq(tab_AGG)
Error in freq(tab_AGG) : could not find function "freq"
save.image("~/Post-doc/Data/Total Merged Data File (Dec 14 2021).RData")
LS0tDQp0aXRsZTogIkNoZWNraW5nIERpc3RyaWJ1dGlvbiBmb3IgVmFyaWFibGVzIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KUGxvdCBhbmQgZml0IGRpc3RyaWJ1dGlvbnMgb2YgdmFyaWFibGVzDQoNCmBgYHtyfQ0KDQpsb2FkKCJDOlxcVXNlcnNcXE5pY29sZSBIZWxsZXNzZXlcXERvY3VtZW50c1xcUG9zdC1kb2NcXERhdGFcXFRvdGFsIERhdGEgTWVyZ2VkIEZpbGUgKERlYyAxNCAyMDIxKS5SZGEiKQ0KDQpoaXN0KGxvZzEwKFRvdGFsRGF0YSR2KSwNCiAgICAgeGxhYiA9ICJWZWxvY2l0eSAoTG9nXjEwIG1tL3MpIikNCg0KYGBgDQoNCkhpc3RvZ3JhbSBvZiBWZWxvY2l0eSBvZiBhbGwNCg0KTG9nIGRpc3RyaWJ1dGlvbiwgMCdzIG1ha2UgdXAgMyUgb2YgYWxsIGRhdGENCg0KYGBge3J9DQpDQy5Ub3RhbERhdGEgPC0gbmEub21pdChUb3RhbERhdGEpDQpoZWFkKENDLlRvdGFsRGF0YSkNCjEwXm1lYW4obG9nMTAoQ0MuVG90YWxEYXRhJHZbQ0MuVG90YWxEYXRhJHY+MF0pKQ0Kc2QobG9nMTAoQ0MuVG90YWxEYXRhJHZbQ0MuVG90YWxEYXRhJHY+MF0pKQ0KDQpgYGANCk5vdyB3ZSdyZSBnb2luZyB0byBwbG90IGVhY2ggdW5pcXVlIGtyaWxsIGFuZCB0aGVpciBiaW1vZGFsaXR5IHdpdGggYSBkaXAgdGVzdCAobGVzcyB0aGFuIDAuMDUgaXMgbXVsdGltb2RhbGl0eSkNCg0KYGBge3J9DQppbmQgPC0gdW5pcXVlKENDLlRvdGFsRGF0YSREX1ZfVCkNCnByaW50KGluZCkNCmxlbmd0aChpbmQpDQpsaWJyYXJ5KGRpcHRlc3QpDQpsaWJyYXJ5KERlc2NUb29scykNCg0KdGFiIDwtIG1hdHJpeChkYXRhID0gTkEsIG5yb3cgPSAxMzMsIG5jb2wgPTUsIGJ5cm93ID0gVCkNCmNvbG5hbWVzKHRhYikgPC0gYygnZGlwLnRlc3QnLCAnc2tldycsICdtZWFuLnZlbG9jaXR5JywgJ3NkLnZlbG9jaXR5JywgJ0luZCcpDQoNCnRhYiA8LSBhcy5kYXRhLmZyYW1lKHRhYikNCnRhYiRJbmQgPC0gaW5kDQptZWFuLnZlbCA8LSBOVUxMDQpzZC52ZWwgPC0gTlVMTA0KZC52IDwtIE5VTEwNCnMudiA8LSBOVUxMDQoNCmZvciAoaSBpbiAxOmxlbmd0aChpbmQpKXsNCm1lYW4udiA8LSBtZWFuKENDLlRvdGFsRGF0YSR2W0NDLlRvdGFsRGF0YSREX1ZfVD09aW5kW2ldXSkNCnNkLnYgPC0gc2QoQ0MuVG90YWxEYXRhJHZbQ0MuVG90YWxEYXRhJERfVl9UPT1pbmRbaV1dKQ0KDQptZWFuLnZlbCA8LSByYmluZChtZWFuLnZlbCwgbWVhbi52KQ0Kc2QudmVsIDwtIHJiaW5kKHNkLnZlbCwgc2QudikNCg0KDQp2ZWxzIDwtIChDQy5Ub3RhbERhdGEkdltDQy5Ub3RhbERhdGEkRF9WX1Q9PWluZFtpXV0pDQp2ZWxzIDwtIGxvZzEwKHZlbHNbdmVscz4wXSkNCmQgPC0gZGlwLnRlc3QodmVscykNCmQucCA8LSBkJHAudmFsdWUNCmQudiA8LSByYmluZChkLnYsIGQucCkNCg0KcyA8LSBTa2V3KHZlbHMpDQpzLnYgPC0gcmJpbmQocy52LCBzKQ0KIyN9DQoNCiMjaW5kIDwtIHVuaXF1ZShDQy5Ub3RhbERhdGEkRF9WX1QpDQoNCiMjZm9yIChpIGluIDE6bGVuZ3RoKGluZCkpew0KIGhpc3QobG9nMTAoQ0MuVG90YWxEYXRhJHZbQ0MuVG90YWxEYXRhJERfVl9UPT1pbmRbaV1dKSwNCiAgICAgYnJlYWtzID0gNTAsDQogICAgIHhsYWIgPSAiVmVsb2NpdHkgKExvZ14xMCBtbS9zKSIsDQogICAgIG1haW4gPSBpbmRbaV0sDQogICAgIHN1YiA9IGQucCkgICMjIGNoYW5nZSB0byBkLnAgb3IgcyB0byBwcmludCB0aGUgZGlwIHRlc3Qgb3Igc2tldyB2YWx1ZSBhcyB0aGUgdGl0bGUgaW5zdGVhZA0KfQ0KDQojIyB0byBzYXZlIGVhY2ggaW5kIGdyYXBoIHRvIHdvcmtpbmcgZGlyZWN0b3J5DQpmb3IgKGkgaW4gMTpsZW5ndGgoaW5kKSl7DQogIGpwZWcoZmlsZW5hbWU9cGFzdGUoaW5kW2ldLCAnLmpwZWcnLCBzZXAgPSAnJyksIHdpZHRoID0gNDgwLCBoZWlnaHQgPSA0ODApDQogaGlzdChsb2cxMChDQy5Ub3RhbERhdGEkdltDQy5Ub3RhbERhdGEkRF9WX1Q9PWluZFtpXV0pLA0KICAgICBicmVha3MgPSA1MCwNCiAgICAgeGxhYiA9ICJWZWxvY2l0eSAoTG9nXjEwIG1tL3MpIiwNCiAgICAgbWFpbiA9IGluZFtpXSkNCmRldi5vZmYoKQ0KfQ0KDQp0YWIkc2tldyA8LSBzLnYNCnRhYiRkaXAudGVzdCA8LSBkLnYNCnRhYiRtZWFuLnZlbG9jaXR5IDwtIChsb2cxMChtZWFuLnZlbCkpDQp0YWIkc2QudmVsb2NpdHkgPC0gKGxvZzEwKHNkLnZlbCkpDQp0YWINCndyaXRlLnRhYmxlKHRhYiwgZmlsZSA9ICJ+L1Bvc3QtZG9jL0RhdGEvZGlwLnRlc3Quc2tldy52ZWxzLmNzdiIsIHNlcCA9ICIsIiwgY29sLm5hbWVzID0gVFJVRSkNCg0KcGxvdCh0YWIpDQoNCg0KaGVhZChUb3RhbERhdGEpDQpzdHIoVG90YWxEYXRhKQ0KVG90YWxEYXRhJEZsb3cucmF0ZSA8LSBhcy5mYWN0b3IoVG90YWxEYXRhJEZsb3cucmF0ZSkNClRvdGFsRGF0YSRDaGxvcm9waHlsbCA8LSBhcy5mYWN0b3IoVG90YWxEYXRhJENobG9yb3BoeWxsKQ0KDQpgYGANCg0KDQpOb3cgbG9va2luZyBhdCB0dXJuaW5nIGFuZ2xlcw0KDQpgYGB7cn0NClRvdGFsRGF0YSR0dXJuLmFuZ2xleHkgPC0gYXRhbjIoVG90YWxEYXRhJFgsIFRvdGFsRGF0YSRZKQ0KVG90YWxEYXRhJHR1cm4uYW5nbGV5eiA8LSBhdGFuMihUb3RhbERhdGEkWSwgVG90YWxEYXRhJFopDQoNCg0KbHRoIDwtIGRpbShUb3RhbERhdGEpWzFdDQpkeDEgPC0gVG90YWxEYXRhJGR4WzE6KGx0aC0xKV0NCmR4MiA8LSBUb3RhbERhdGEkZHhbMjpsdGhdDQpkeTEgPC0gVG90YWxEYXRhJGR5WzE6KGx0aC0xKV0NCmR5MiA8LSBUb3RhbERhdGEkZHlbMjpsdGhdDQpkejEgPC0gVG90YWxEYXRhJGR6WzE6KGx0aC0xKV0NCmR6MiA8LSBUb3RhbERhdGEkZHpbMjpsdGhdDQpEIDwtIChkeDEqZHgyKSsoZHkxKmR5MikrKGR6MSpkejIpDQpkMSA8LSBzcXJ0KGR4MV4yICsgZHkxXjIgK2R6MV4yKQ0KZDIgPC0gc3FydChkeDJeMiArIGR5Ml4yICtkejJeMikNCg0KZGQgPC0gRC9kMS9kMg0KaGlzdChhY29zKGRkKS9waSoxODApDQoNClRvdGFsRGF0YSR0dXJuLmFuZ2xlIDwtIGMoTkEsIGFjb3MoRC9kMS9kMikpL3BpKjE4MA0KaGVhZChUb3RhbERhdGEpDQpDQy5Ub3RhbERhdGEgPC0gbmEub21pdChUb3RhbERhdGEpDQpoZWFkKENDLlRvdGFsRGF0YSkNCnRhaWwoQ0MuVG90YWxEYXRhKQ0Kc3RyKENDLlRvdGFsRGF0YSkNCkNDLlRvdGFsRGF0YSRGbG93LnJhdGUgPC0gYXMuY2hhcmFjdGVyKENDLlRvdGFsRGF0YSRGbG93LnJhdGUpDQpDQy5Ub3RhbERhdGEkQ2hsb3JvcGh5bGw8LSBhcy5jaGFyYWN0ZXIoQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsKQ0KQ0MuVG90YWxEYXRhJEd1YW5vIDwtIGFzLmNoYXJhY3RlcihDQy5Ub3RhbERhdGEkR3Vhbm8pDQpDQy5Ub3RhbERhdGEkTGlnaHQgPC0gYXMuY2hhcmFjdGVyKENDLlRvdGFsRGF0YSRMaWdodCkNCg0KDQpDQy5Ub3RhbERhdGEkRmxvdy5yYXRlIDwtIGFzLm51bWVyaWMoQ0MuVG90YWxEYXRhJEZsb3cucmF0ZSkNCkNDLlRvdGFsRGF0YSRDaGxvcm9waHlsbDwtIGFzLm51bWVyaWMoQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsKQ0KDQpoZWFkKENDLlRvdGFsRGF0YSkNCg0KaW5kIDwtIHVuaXF1ZShDQy5Ub3RhbERhdGEkRF9WX1QpDQoNCiMjIHRvIHNhdmUgaW5kIGhpc3RvZ3JhbSBwbG90cw0KZm9yIChpIGluIDE6bGVuZ3RoKGluZCkpew0KanBlZyhmaWxlbmFtZT1wYXN0ZShpbmRbaV0sICcuanBlZycsIHNlcCA9ICcnKSwgd2lkdGggPSA0ODAsIGhlaWdodCA9IDQ4MCkNCmhpc3QoQ0MuVG90YWxEYXRhJHR1cm4uYW5nbGVbQ0MuVG90YWxEYXRhJERfVl9UPT1pbmRbaV1dLA0KICAgICBicmVha3MgPSA1MCwNCiAgICAgeGxhYiA9ICJUdXJuIEFuZ2xlcyAoZGVncmVlcykiLA0KICAgICBtYWluID0gaW5kW2ldKSANCmRldi5vZmYoKQ0KfQ0KDQpwbG90KENDLlRvdGFsRGF0YSRGbG93LnJhdGUsIENDLlRvdGFsRGF0YSR0dXJuLmFuZ2xlLCBtYWluID0gIiIsIHhsYWIgPSAiRmxvdyBSYXRlIChjbS9zKSIsIHlsYWIgPSAiVHVybiBhbmdsZSAoZGVncmVlcykiKQ0KDQpwbG90KENDLlRvdGFsRGF0YSRDaGxvcm9waHlsbCwgQ0MuVG90YWxEYXRhJHR1cm4uYW5nbGUsIG1haW4gPSAiIiwgeGxhYiA9ICJDaGxvcm9waHlsbCAobWcvTCkiLCB5bGFiID0gIlR1cm4gYW5nbGUgKGRlZ3JlZXMpIikNCg0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dwbG90KFRvdGFsRGF0YSxhZXMoeD1GbG93LnJhdGUsIHk9bG9nMTAodiksIGZpbGw9Q2hsb3JvcGh5bGwpKSsNCiAgZ2VvbV9ib3hwbG90KG5vdGNoPUYsIG5vdGNod2lkdGg9MC4zLG91dGxpZXIuc2hhcGU9MSxvdXRsaWVyLnNpemU9MiwgY29lZj0xLjUpKw0KICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KGNvbG9yPSJibGFjayIpKSsNCiAgdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwLGhqdXN0PTEsdmp1c3Q9MC40KSkrDQogIHRoZW1lKHBhbmVsLmdyaWQubWlub3I9ZWxlbWVudF9ibGFuaygpKSsNCiAgbGFicyhzaXplPSAiIix4ID0gIkZsb3cgUmF0ZSAoY20vcykiLCB5ID0gIlZlbG9jaXR5IChMb2cgdHJhbnNmb3JtZWQpKG1tL3MpIiwgdGl0bGUgPSAiTGlnaHQiKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJncmVlbnllbGxvdyIsICJ5ZWxsb3dncmVlbiIsImxpZ2h0Z3JlZW4iLCAiZ3JlZW4iLCAiZ3JlZW4zIiwgImdyZWVuNCIsICJkYXJrZ3JlZW4iKSxuYW1lID0gIkNobG9yb3BoeWxsIChtZy9MKSIsDQogICAgICAgICAgICAgICAgICAgIGxhYmVscz1jKCIwIiwgIjQuMyIsICI0LjYiLCAiNi4xIiwgIjcuNiIsICIxMy41IiwgIjE5IikpKw0KICBmYWNldF9ncmlkKH5MaWdodCwgc2NhbGVzID0gImZyZWVfeCIsIHNwYWNlID0gImZyZWUiKQ0KDQpnZ3Bsb3QoVG90YWxEYXRhLGFlcyh4PUZsb3cucmF0ZSwgeT10dXJuLmFuZ2xlLCBmaWxsPUNobG9yb3BoeWxsKSkrDQogIGdlb21fYm94cGxvdChub3RjaD1GLCBub3RjaHdpZHRoPTAuMyxvdXRsaWVyLnNoYXBlPTEsb3V0bGllci5zaXplPTIsIGNvZWY9MS41KSsNCiAgdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChjb2xvcj0iYmxhY2siKSkrDQogIHRoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCxoanVzdD0xLHZqdXN0PTAuNCkpKw0KICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yPWVsZW1lbnRfYmxhbmsoKSkrDQogIGxhYnMoc2l6ZT0gIiIseCA9ICJGbG93IFJhdGUgKGNtL3MpIiwgeSA9ICJUdXJuIEFuZ2xlIChkZWdyZWVzKSIsIHRpdGxlID0gIkxpZ2h0IikgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZ3JlZW55ZWxsb3ciLCAieWVsbG93Z3JlZW4iLCJsaWdodGdyZWVuIiwgImdyZWVuIiwgImdyZWVuMyIsICJncmVlbjQiLCAiZGFya2dyZWVuIiksbmFtZSA9ICJDaGxvcm9waHlsbCAobWcvTCkiLA0KICAgICAgICAgICAgICAgICAgICBsYWJlbHM9YygiMCIsICI0LjMiLCAiNC42IiwgIjYuMSIsICI3LjYiLCAiMTMuNSIsICIxOSIpKSsNCiAgZmFjZXRfZ3JpZCh+TGlnaHQsIHNjYWxlcyA9ICJmcmVlX3giLCBzcGFjZSA9ICJmcmVlIikNCg0KYGBgDQoNClN0YXJ0aW5nIHRvIGxvb2sgYXQgYmktbW9kYWxpdHkgaW4gdGhlIHZhcmlhYmxlcyBieSBtZXJnaW5nIHRoZSBUb3RhbERhdGEgZnJhbWUgd2l0aCB0aGUgInRhYiIgdGFibGUNCmBgYHtyfQ0KIyNhZ2dyZWdhdGluZyBDb21wbGV0ZSBjYXNlcyBvZiBUb3RhbERhdGEgc28gd2UgY2FuIG1lcmdlIGl0IHdpdGggdGFiIGRhdGENCg0KQUdHX1REIDwtIGFnZ3JlZ2F0ZShDQy5Ub3RhbERhdGEsIGJ5ID0gbGlzdChDQy5Ub3RhbERhdGEkRF9WX1QpLCBGVU4gPSBtZWFuKQ0KaGVhZChBR0dfVEQpDQpBR0dfVEQgPC0gQUdHX1REWyAtYygyOjMsIDg6MTApIF0NCmNvbG5hbWVzKEFHR19URCkgPC0gYygiSW5kIiwgIlgiLCAiWSIsICJaIiwgIlRyYWNrIiwgIkZsb3cuUmF0ZSIsICJDaGxvcm9waHlsbCIsICJHdWFubyIsICJMaWdodCIsICJkeCIsICJkeSIsICJkeiIsICJkIiwgInZ4IiwgInZ5IiwgInZ6IiwgInYiLCAiaGVhZGluZyIsICJwaXRjaCIsICJ0dXJuLmFuZ2xleHkiLCAidHVybi5hbmdsZXl6IiwgInR1cm4uYW5nbGUiKQ0KaGVhZChBR0dfVEQpDQp0YWlsKEFHR19URCkNCg0KDQp0YWJfQUdHIDwtIG1lcmdlKEFHR19URCwgdGFiLCBieSA9ICJJbmQiKQ0KaGVhZCh0YWJfQUdHKQ0Kc3RyKHRhYl9BR0cpDQp0YWJfQUdHJEZsb3cuUmF0ZSA8LSBhcy5mYWN0b3IodGFiX0FHRyRGbG93LlJhdGUpDQp0YWJfQUdHJENobG9yb3BoeWxsIDwtIGFzLmZhY3Rvcih0YWJfQUdHJENobG9yb3BoeWxsKQ0KDQpmcmVxIDwtIHRhYmxlKHRhYl9BR0ckRmxvdy5SYXRlLCB0YWJfQUdHJENobG9yb3BoeWxsKQ0KcHJpbnQoZnJlcSkNCnByb2IgPC0gcHJvcC50YWJsZShmcmVxKSAjI1JlbGF0aXZlIEZyZXF1ZW5jeSBUYWJsZQ0KcHJpbnQgKHByb2IpDQoNCiMjc3RhcnRpbmcgdG8gcGxvdCB0aGUgZGlwIHRlc3QgYW5kIHNrZXcgaW4gdGhlIHZhcmlhYmxlcw0KcGxvdCh0YWJfQUdHJEZsb3cuUmF0ZSwgdGFiX0FHRyRkaXAudGVzdCwgeGxhYiA9ICJGbG93IFJhdGUgKGNtL3MpIiwgeWxhYiA9ICJEaXAgVGVzdCAocC52YWx1ZSkiKQ0KcGxvdCh0YWJfQUdHJEZsb3cuUmF0ZSwgdGFiX0FHRyRza2V3LCB4bGFiID0gIkZsb3cgUmF0ZSAoY20vcykiLCB5bGFiID0gIlNrZXcgVGVzdCAocC52YWx1ZSkiKQ0KcGxvdCh0YWJfQUdHJENobG9yb3BoeWxsLCB0YWJfQUdHJGRpcC50ZXN0LCB4bGFiID0gIkNobG9yb3BoeWxsIChtZy9MKSIsIHlsYWIgPSAiRGlwIFRlc3QgKHAudmFsdWUpIikNCnBsb3QodGFiX0FHRyRDaGxvcm9waHlsbCwgdGFiX0FHRyRza2V3LCB4bGFiID0gIkNobG9yb3BoeWxsIChtZy9MKSIsIHlsYWIgPSAiU2tldyBUZXN0IChwLnZhbHVlKSIpDQoNCg0KIyMgdG8gc2F2ZSBlYWNoIGluZCBncmFwaA0KZm9yIChpIGluIDE6bGVuZ3RoKGluZCkpew0KICBqcGVnKGZpbGVuYW1lPXBhc3RlKGluZFtpXSwgJy5qcGVnJywgc2VwID0gJycpLCB3aWR0aCA9IDQ4MCwgaGVpZ2h0ID0gNDgwKQ0KcGxvdChDQy5Ub3RhbERhdGEkdHVybi5hbmdsZVtDQy5Ub3RhbERhdGEkRF9WX1Q9PWluZFtpXV0sIGxvZzEwKENDLlRvdGFsRGF0YSR2W0NDLlRvdGFsRGF0YSREX1ZfVD09aW5kW2ldXSksDQogICAgICAgICAgICB4bGFiID0gIlR1cm4gQW5nbGVzIChkZWdyZWVzKSIsDQogICAgIHlsYWIgPSAiVmVsb2NpdHkgKExPZ14xMCwgbW0vcykiLA0KICAgICAgICAgIG1haW4gPSBpbmRbaV0pIA0KZGV2Lm9mZigpDQp9DQpgYGANCg0KDQpgYGB7cn0NCnNhdmUuaW1hZ2UoIn4vUG9zdC1kb2MvRGF0YS9Ub3RhbCBNZXJnZWQgRGF0YSBGaWxlIChEZWMgMTQgMjAyMSkuUkRhdGEiKQ0KDQpgYGANCg0KDQoNCg==